package com.etc.service.impl;

import com.etc.dao.FlashSaleDao;
import com.etc.entity.FlashSale;
import com.etc.redis.FlashSaleKey;
import com.etc.redis.RedisService;
import com.etc.service.FlashSaleService;

import com.etc.utils.PageData;
import com.etc.vo.FlashSaleVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 文件名:com.etc.service.impl
 * 描述：
 * 作者:吴仕泉
 * 时间:2019/5/24 2:15
 */
@Service
public class FlashSaleServiceImpl implements FlashSaleService {

    @Autowired
    FlashSaleDao flashSaleDao;

    @Autowired
    RedisService redisService;

    //查询今日的所有秒杀活动
    @Override
    public List<FlashSale> selectTodaySale() {
        //设置日期格式
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        // new Date()为获取当前系统时间
        String daykey = df.format(new Date());
        //获取redis缓存中今日活动的数据
        List<FlashSale> lfs = redisService.getList(FlashSaleKey.todayFlashSaleKey,daykey);
        if(lfs==null||lfs.size()<=0){
           //调用数据库
            List<FlashSale> listfs = flashSaleDao.listTodaySale();
            if(listfs != null&&listfs.size()>0){
                //把数据保存在redis缓存中
                redisService.setList(FlashSaleKey.todayFlashSaleKey,daykey,listfs);
                return listfs;
            }
            return null;
        }
        return lfs;
    }

    //分页查询所有的秒杀活动信息
    @Override
    public PageData<FlashSaleVo> selectFlashSaleByPage(Integer pageSize, Integer page) {
       int star = (page-1) * pageSize;
        List<FlashSale> data = flashSaleDao.listFlashSalePage(star,pageSize);
        List<FlashSaleVo> fv = new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        String datastr = sdf.format(d);
        for(int i = 0 ; i < data.size();i++){
            FlashSaleVo fso = new FlashSaleVo();
            fso.setFlashsaleid(data.get(i).getFlashsaleid());
            fso.setFlashsalename(data.get(i).getFlashsalename());
            fso.setFlashstarttime(sdf.format(data.get(i).getFlashstarttime()));
            fso.setFlashendtime(sdf.format(data.get(i).getFlashendtime()));
            fv.add(fso);
        }
        int num =  flashSaleDao.getCount();
        if(data == null || num < 0){
            return null;
        }
        PageData<FlashSaleVo> pd = new PageData<>(fv,num,pageSize,page);
        return pd;
    }


}
